Light transduction, Figures 9-11
Figure 9: Spectral components
Spectral properties of visual system components that determine the input-referred quantum efficiency of the cones. (a) The crystalline lens dramatically reduces the fraction of short wavelength light transmitted to the retina. The optical density of the lens varies between people and with age. (b) The macular pigment is present in foveal, but not peripheral, regions of the retina. The pigment density in the fovea varies across people and with disease. (c) The optical density of the cone photopigment varies between people and across the retina. In all panels the dark solid curve is the standard and lighter curves are variations
The lens
thisLens.set('wave',wave);
lensDensity = thisLens.density;
thisLens.density = lensDensity + dd;
t = thisLens.transmittance;
p = plot(wave,t,'color',[0.5 0.5 0.5]);
p.LineWidth = 2; p.Color = 'k';
grid on; xlabel('Wavelength (nm)'); ylabel('Transmittance');
The macular pigment
macularDensity = thisM.density;
thisM.density = dd + macularDensity;
p = plot(wave,t,'color',[0.5 0.5 0.5]);
p.LineWidth = 2; p.Color = 'k';
grid on; xlabel('Wavelength (nm)'); ylabel('Transmittance');
Cones pigment
conePigments = photoPigment;
conePigments.wave = wave;
pigmentDensity = conePigments.opticalDensity;
thisColor = [0.8 0.2 0.2; 0.2 0.6 0.2; 0.1 0.1 0.8];
peakColor = {'r','g','b'};
conePigments.opticalDensity = pigmentDensity + dd*ones(size(pigmentDensity));
p = plot(conePigments.wave,conePigments.absorptance);
p(ii).Color = thisColor(ii,:); p(ii).LineStyle = ':';
p(ii).LineWidth = 2; p(ii).Color = peakColor{ii}; p(ii).LineStyle = '-';
grid on; xlabel('Wavelength (nm)'); ylabel('Prob(Absorbtion)');
Fundamentals combined with varying lens, macular, and pigment
% Set up a mosaic with high wavelength sampling
cm = cMosaic;
min cone aperture diameter = 1.694712 microns
thisColor = [0.6 0.2 0.2; 0.2 0.6 0.2; 0.1 0.2 0.5];
thisLens.density = lensDensity + ll;
cm.macular.density = macularDensity + mm;
cm.pigment.opticalDensity = pigmentDensity + pp*ones(size(pigmentDensity));
[~,fighdl] = cm.plot('spectral qe',[],'lens',thisLens,'hdl',hdl);
p = fighdl.Children.Children;
if ll==0 && mm == 0 && pp == 0
p(ii).Color = peakColor{4-ii};
p(ii).Color = thisColor(4-ii,:); p(ii).LineStyle = ':';
Figure 10 - Cone fundamentals

Cone fundamentals. The cone excitation calculations start with the stimulus (scene spectral radiance). The transmission through the lens and macular pigment combined with the cone absorptance form a spectral function called the cone fundamental. The fundamental is the input-referred spectral quantum efficiency of the cone. (a) The fundamental is defined using standard values (solid curves) for the lens, macular pigment and photopigment. There are significant variations (dotted curves) across the population, with the largest variation in the spectrum below 550 nm. (b) There is a reliable difference between the cone fundamentals near the fovea (dashed lines) and periphery because of the macular pigment (solid lines). (c) The three images give an impression of how the scene spectral radiance (left) is transformed as it passes through the lens (middle) and macular pigment (right). The ISETBio implementation includes lens factors as part of the retinal spectral irradiance (oi) computation; it includes macular pigment factors as part of the cone mosaic (cMosaic) computations.
Fundamentals with and without macular pigment
thisColor = [0.6 0.2 0.2; 0.2 0.6 0.2; 0.1 0.1 0.6];
cm.macular.density = 0.35;
cm.plot('spectral qe',[],'lens',thisLens,'hdl',hdl);
p = hdl.Children.Children;
p(ii).Color = peakColor{4-ii}; p(ii).LineStyle = '--';
cm.plot('spectral qe',[],'lens',thisLens,'hdl',hdl);
p = hdl.Children.Children;
p(ii).Color = peakColor{4-ii};
% legend({'Density 0.35','Density 0'});
scene = sceneFromFile('stanfordQuadEntryLowRes.png','rgb',100,...
'reflectance-display',400:10:700);
[vcReadImage] Assuming an 8bit image and a 10 bit LUT
Just the lens
oi = oiCompute(oi,scene);
The lens and macular pigment
photons = oiGet(oi,'photons');
photons(:,:,ii) = photons(:,:,ii)*t(ii);
oi = oiSet(oi,'photons',photons);
Figure 11 - Cone sampling and aperture size
Cone sampling and aperture size. (Top) The spatial sampling density of the cone photoreceptors changes substantially decreasing from the fovea (left) to periphery (right). The image shows a narrow strip along the horizontal axis. As sampling density decreases, aperture size increases. Consequently for a constant irradiance pattern the number of excitations per cone increases. (Bottom) The gray scale image shows the estimated number excitations in the cone mosaic in response to a harmonic stimulus of constant contrast across the image. The colored curves show the mean number of excitations for each of the three cone types (scale bar at the right).
Cone mosaic
Create a strip along the horizontal axis. The macular pigment varies along this strip.
cmP.positionDegs = [3,0]; cmP.sizeDegs = [6 1];
cm = cMosaic(cmP);
min cone aperture diameter = 1.694712 microns
cm.visualize('plotTitle',false);
Create a harmonic
scene = sceneCreate('harmonic',hP);
scene = sceneSet(scene,'fov',7);
oi = oiCreate('wvf human');
oi = oiCompute(oi,scene);
Calculate the excitations
cm.integrationTime = 0.05;
allE = cm.compute(oi);
min cone aperture diameter = 1.716243 microns
Warning: The retinal image resolution (4.17 microns) is too low relative to the cone aperture (3.30 microns) for accurate computation of cone blur.
Skipping blur by cone aperture.
Consider increasing the # of pixels in the stimulus or decrease the stimulus FOV.
cm.plot('excitations',allE);
uData = cm.plot('excitations horizontal line',allE,'ydeg',0);
A rough assessment of the total number of excitations per millimeter.
regionE = zeros(nRegions,1);
excitations = squeeze(roiE);
l = pos(:,1) <= xStep*ii & pos(:,1) > xStep*(ii - 1);
regionE(ii) = sum(excitations(l));
xlabel('Retinal position (deg)'); ylabel('Summed excitations');